package ciel.scene;

import org.mt4j.MTApplication;
import org.mt4j.components.visibleComponents.widgets.MTBackgroundImage;

import ciel.debugging.CielDebugger;
import ciel.res.CielSettings;

/**
 * Einstiegspunkt in das Programm - Startet die verschiedenen Scenes
 * Die ImageScene wird in Hintergrund erzeugt während die SplashScene angezeigt wird.
 * 
 * @author Alexander Bazo
 *
 */
public class StartCielScene extends MTApplication {
	private static final long serialVersionUID = 1L;

	/**
	 * Die beiden darzustellenden Scene werden in Variablen gespeichert um später leichter auf sie zuzugreifen
	 */
	CielImageScene imageScene;
	CielSplashScreenScene splashSceen;
	
	/**
	 * Programmeinstieg
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * MT4J
		 */
		initialize();
	}
	
	/**
	 * MT4J
	 * Setzt die Bildschirmgröße (MT4J - Processing) anhand der Werte aus @see CielSettings
	 * Setzt die FLAG, die bestimmt ob DebugAusgaben verarbeitet werden
	 * Fügt die SplashScene hinzu und erstellt in einem Hintergrundprozess die ImageScene
	 */
	@Override
	public void startUp() {
		height = CielSettings.Dimensions.SCREEN_HEIGHT;
		width = CielSettings.Dimensions.SCREEN_WIDTH;
		CielDebugger.setDebugState(true);
		CielDebugger.log("Screenresolution: "+CielSettings.Dimensions.SCREEN_WIDTH + "*" + CielSettings.Dimensions.SCREEN_HEIGHT);
		CielDebugger.log("Ciel started");
		
		splashSceen = new CielSplashScreenScene(this, "CielSplashScreenSceen");
		addScene(splashSceen);
		
		final MTApplication app = this;
		final MTBackgroundImage img = new MTBackgroundImage(app, loadImage("src/ciel/res/server_bg.png"), false);
		
		/**
		 * In diesem Thread wird die ImageScene erstellt und danach zu dieser gewechselt
		 */
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				imageScene = new CielImageScene(app, "CielImageScene", img);
				changeScene(imageScene);
			}
		}).start();
	}
}
